﻿using System;
using System.Collections.Generic;
using System.Text;
using com.clinica.business.BE.gesliq;
using com.clinica.business.entities;
using com.clinica.dao.sql;
/****************************************************************************************
 * Sistema    : Sistema de Gestión de Clinica
 * Modulo     : Facturación y Presupuestos
 * Descripción: 
 * Autor      : JPEREZ
 * Fecha      : 2011-06-01
 ****************************************************************************************/

namespace com.clinica.DL.sql.gesliq
{
    public static class LiquidacionDL
    {
        public static List<LiquidacionBE> ObtenerLiquidaciones(LiquidacionBE oLiquidacion, DateTime dtFecha_Inicio,DateTime dtFecha_Fin)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            List<LiquidacionBE> lst = new List<LiquidacionBE>();
            Comando cmd = new Comando();
            cmd.CommandName = "PRC_ObtenerLiquidaciones_03";
            cmd.AddParameter("@TipoLiquidacion", oLiquidacion.TipoLiquidacion);
            cmd.AddParameter("@Fecha_Emision_Desde", dtFecha_Inicio.ToString("yyyyMMdd"));
            cmd.AddParameter("@Fecha_Emision_Fin", dtFecha_Fin.ToString("yyyyMMdd"));
            cmd.AddParameter("@NroDocumento", oLiquidacion.NumeroDocumento);
            cmd.AddParameter("@NumeroLiq", oLiquidacion.Numero);            
            lst = (List<LiquidacionBE>)ElManager.EjecutarStore<LiquidacionBE>(cmd, DataBase.CLINICA_WEB);
            return lst;
        }
        public static List<LiquidacionBE> ObtenerLiquidacionesXEstado(LiquidacionBE oLiquidacion, DateTime dtFecha_Inicio, DateTime dtFecha_Fin)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            List<LiquidacionBE> lst = new List<LiquidacionBE>();
            Comando cmd = new Comando();
            cmd.CommandName = "PRC_ObtenerLiquidacionesParaEstado_12";
            cmd.AddParameter("@TipoLiquidacion", oLiquidacion.TipoLiquidacion);
            cmd.AddParameter("@Fecha_Emision_Desde", dtFecha_Inicio.ToString("yyyyMMdd"));
            cmd.AddParameter("@Fecha_Emision_Fin", dtFecha_Fin.ToString("yyyyMMdd"));
            cmd.AddParameter("@NroDocumento", oLiquidacion.NumeroDocumento);
            cmd.AddParameter("@NumeroLiq", oLiquidacion.Numero);
            lst = (List<LiquidacionBE>)ElManager.EjecutarStore<LiquidacionBE>(cmd, DataBase.CLINICA_WEB);
            return lst;
        }
        public static List<OrdenAtencionBE> ObtenerLiquidacion(LiquidacionBE oLiquidacion)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            List<OrdenAtencionBE> lst = new List<OrdenAtencionBE>();
            Comando cmd = new Comando();
            cmd.CommandName = "PCR_Obtner_Liquidacion_08";
            cmd.AddParameter("@Num", oLiquidacion.Numero);
            cmd.AddParameter("@TipoLiq", oLiquidacion.TipoLiquidacion);
            lst = (List<OrdenAtencionBE>)ElManager.EjecutarStore<OrdenAtencionBE>(cmd, DataBase.CLINICA_WEB);
            return lst;
        }

        public static LiquidacionBE MantenimientoLiquidaciones(LiquidacionBE oLiquidacion)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            List<LiquidacionBE> lst = new List<LiquidacionBE>();
            Comando cmd = new Comando();
            LiquidacionBE result = new LiquidacionBE();
            cmd.CommandName = "PCR_Mantenimiento_Cab_Liquidacion_06";
            cmd.AddParameter("@Accion", oLiquidacion.Accion);
            cmd.AddParameter("@Correlativo", oLiquidacion.Numero);
            cmd.AddParameter("@TipoLiq", oLiquidacion.TipoLiquidacion);
            cmd.AddParameter("@FechaCorte", oLiquidacion.FechaCorte.ToString("yyyyMMdd"));
            cmd.AddParameter("@Fechaemicion", oLiquidacion.FechaEmision.ToString("yyyyMMdd"));
            cmd.AddParameter("@CodPaciente", oLiquidacion.CodigoPaciente);
            cmd.AddParameter("@Observacion", oLiquidacion.Observacion);
            cmd.AddParameter("@ImporteBruto", oLiquidacion.ImporteBruto);
            cmd.AddParameter("@ImporteNeto", oLiquidacion.ImporteNeto);
            cmd.AddParameter("@ImporteIgv", oLiquidacion.Igv);
            cmd.AddParameter("@ImporteDescuento", oLiquidacion.Descuento);
            cmd.AddParameter("@ImporteCoSeguro", oLiquidacion.CostoSeguro);
            cmd.AddParameter("@ImporteDeducible", oLiquidacion.Deducible);
            cmd.AddParameter("@EsAsegurado", oLiquidacion.EsAsegurado);

            result = (LiquidacionBE)ElManager.EjecutarStore<LiquidacionBE>(cmd, DataBase.CLINICA_WEB)[0];
            return result;
        }

        public static void AnularLiquidacion(LiquidacionBE oLiquidacion)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            List<OrdenAtencionBE> lst = new List<OrdenAtencionBE>();
            Comando cmd = new Comando();
            cmd.CommandName = "PRC_AnularLiquidacion_11";
            cmd.AddParameter("@Num", oLiquidacion.Numero);
            cmd.AddParameter("@TIPLIQ", oLiquidacion.TipoLiquidacion);
            lst = (List<OrdenAtencionBE>)ElManager.EjecutarStore<OrdenAtencionBE>(cmd, DataBase.CLINICA_WEB);
        }
        public static void AprobarLiquidacion(LiquidacionBE oLiquidacion)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            List<LiquidacionBE> lst = new List<LiquidacionBE>();
            Comando cmd = new Comando();
            cmd.CommandName = "PRC_ActualizarEstadoLiquidacion_05";
            cmd.AddParameter("@TipoLiq", oLiquidacion.TipoLiquidacion);
            cmd.AddParameter("@NumeroLiq", oLiquidacion.Numero);
            cmd.AddParameter("@Observacion", oLiquidacion.Observacion);
            lst = (List<LiquidacionBE>)ElManager.EjecutarStore<LiquidacionBE>(cmd, DataBase.CLINICA_WEB);
        }
        public static void RechazarLiquidacion(LiquidacionBE oLiquidacion)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-07-03
             ****************************************************************************************/

            List<LiquidacionBE> lst = new List<LiquidacionBE>();
            Comando cmd = new Comando();
            cmd.CommandName = "PRC_RechazarLiquidacion_06";
            cmd.AddParameter("@TipoLiq", oLiquidacion.TipoLiquidacion);
            cmd.AddParameter("@NumeroLiq", oLiquidacion.Numero);
            cmd.AddParameter("@Observacion", oLiquidacion.Observacion);
            lst = (List<LiquidacionBE>)ElManager.EjecutarStore<LiquidacionBE>(cmd, DataBase.CLINICA_WEB);
        }

        

    }
}
